Il existe de nombreuses manières d'implémenter l'algorithme de dichotomie, selon les informations que l'on peut avoir sur la fonction.
Le principe reste toujours le même : on calcule la valeur de la fonction au milieu de l'intervalle de recherche, puis on compare avec la valeur de la fonction aux bornes de l'intervalle. On remplace alors une de ces bornes par la valeur milieu.
Ainsi, dans l'algorithme général de la dichotomie, on regarde si
\(f(a)\)
et
\(f(m)\)
sont du même signe.
Or, dans l'exemple précédent, on a une information supplémentaire : on sait que
\(f(a)<0\)
. Ainsi, dans cette situation, dire que
\(f(a)\)
et
\(f(m)\)
sont de même signe est équivalent à dire que
\(f(m)\)
est également strictement négatif. Il suffit donc, dans ce cas, de calculer
\(f(m)\)
et de regarder son signe.
Notre algorithme de dichotomie peut alors s'écrire de la manière suivante.
def f(x):
return x**3 - 3*x + 1
def dicho(f, a, b, p):
while b - a > 10 ** (-p):
m = (a+b)/2
if f(m) < 0:
a = m
else :
b = m
return a, b
dicho(f,1,2,3)
L'algorithme est en tout point identique, mise à part la condition indiquée dans le if.
Cette condition peut être adaptée selon les informations qu'on a à disposition sur la fonction \(f\) étudiée.
Par ailleurs, selon ce que l'on souhaite, on pourra renvoyer seulement la valeur de \(a\) , de \(b\) ou la dernière valeur de \(m\) , plutôt que d'avoir l'intervalle final.
Source : https://lesmanuelslibres.region-academique-idf.frTélécharger le manuel : https://forge.apps.education.fr/drane-ile-de-france/les-manuels-libres/mathematiques-terminale-specialite ou directement le fichier ZIPSous réserve des droits de propriété intellectuelle de tiers, les contenus de ce site sont proposés dans le cadre du droit Français sous licence CC BY-NC-SA 4.0